home *** CD-ROM | disk | FTP | other *** search
/ Risc World 3 / Risc World 3.iso / SOFTWARE / ISSUE2 / PD / VINCE / !ViNCe / c / corre8 < prev    next >
Text File  |  2002-03-10  |  2KB  |  66 lines

  1. /*
  2.  *  Copyright (C) 1999 AT&T Laboratories Cambridge.  All Rights Reserved.
  3.  *
  4.  *  This is free software; you can redistribute it and/or modify
  5.  *  it under the terms of the GNU General Public License as published by
  6.  *  the Free Software Foundation; either version 2 of the License, or
  7.  *  (at your option) any later version.
  8.  *
  9.  *  This software is distributed in the hope that it will be useful,
  10.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  *  GNU General Public License for more details.
  13.  *
  14.  *  You should have received a copy of the GNU General Public License
  15.  *  along with this software; if not, write to the Free Software
  16.  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
  17.  *  USA.
  18.  */
  19.  
  20. /*
  21.  * corre.c - handle CoRRE encoding.
  22.  *
  23.  * This file shouldn't be compiled directly.  It is included multiple times by
  24.  * rfbproto.c, each time with a different definition of the macro BPP.  For
  25.  * each value of BPP, this file defines a function which handles a CoRRE
  26.  * encoded rectangle with BPP bits per pixel.
  27.  */
  28.  
  29.  
  30. static Bool HandleCoRRE8 (int rx, int ry, int rw, int rh) {
  31.     rfbRREHeader hdr;
  32.     int i;
  33.     CARD8 pix;
  34.     CARD8 *ptr;
  35.     int x, y, w, h;
  36.  
  37.     fprintf(stderr, "CORRE\n");
  38.     if (!ReadFromRFBServer((char *)&hdr, sz_rfbRREHeader))
  39.     return False;
  40.  
  41.     hdr.nSubrects = Swap32IfLE(hdr.nSubrects);
  42.  
  43.     if (!ReadFromRFBServer((char *)&pix, sizeof(pix)))
  44.     return False;
  45.  
  46.     display_fillrectangle(rx, ry, rw, rh, pix);
  47.  
  48.     if (!ReadFromRFBServer(buffer, hdr.nSubrects * (4 + (BPP / 8))))
  49.     return False;
  50.  
  51.     ptr = (CARD8 *)buffer;
  52.  
  53.     for (i = 0; i < hdr.nSubrects; i++) {
  54.     pix = *(CARD8 *)ptr;
  55.     ptr += BPP/8;
  56.     x = *ptr++;
  57.     y = *ptr++;
  58.     w = *ptr++;
  59.     h = *ptr++;
  60.  
  61.         display_fillrectangle(rx + x, ry + y, w, h, rgb332_rgb555_table[pix]);
  62.     }
  63.  
  64.     return True;
  65. }
  66.